A. Technical Field
The present invention relates generally to the encoding of data for transmission along a communications link, and more particularly, to distortion cost estimation within the transform domain for a video encoding mode.
B. Background of the Invention
The burden of high bandwidth applications, such as voice and video, on networks is continually increasing. To facilitate these bandwidth intensive applications, compression technology and standards are evolving to allow these applications to be more effectively communicated across a network to a client. One such standard that relates to the encoding and decoding of video signals is MPEG-4's latest coding standard referred to as MPEG-4/AVC (Advanced Video Coding Standard), which is also commonly referred to by its International Telecommunications Union standard name of H.264. For higher coding efficiencies, MPEG-4/AVC provides tools for variable block size motion compensation prediction for encoding video macroblocks.
Although this standard generally improves the method in which data is encoded, it also increases the demands placed on the processing resources of the encoder itself. Because of the time-sensitive nature of transmitting and receiving video data, an encoder has a limited amount of time to select an appropriate encoding method for a video frame, encode the video frame, and transmit the frame onto a network. The quality of the video signal may be jeopardized if the encoder is unable to complete all of the necessary encoding computations, within the requisite time, that may be needed to encode and transmit the video signal.
FIG. 1 illustrates a typical communications link 120 on which an encoded video signal may be communicated. As illustrated, a video camera 110 generates a video signal, which is sent to an encoder 115. This encoder 115 may be software located on a computer or server that is connected to the communications link 120. The encoder 115 receives a video frame, which is typically divided in macroblocks for encoding purposes. Depending on the content in these macroblocks, they may be further partitioned into smaller blocks to allow more precision in the encoding process.
Each of these macroblocks, and sub-blocks within a macroblock, may be encoded relative to another block located within the same video frame or relative to a block in a previous or future reference frame within the video signal. This encoding is intended to reduce the amount of data redundancy that is transmitted on the communications link 120.
There are typically two types of modes, intra and inter mode, in which a macroblock may be encoded. Intra mode encoding means that encoding occurs relative to blocks within the same video frame. Inter mode encoding means that encoding occurs relative to one or more reference frames outside the current video frame. After a macroblock is encoded, it is transmitted, via the communications link 120, to a receive-side decoder 125. The decoder 125 reconstructs the macroblock within the video signal so that it may be shown in the context of its corresponding frame on the display device 130.
As mentioned above, when either inter or intra mode encoding is performed, a macroblock (e.g., a 16×16 block within a video frame) is encoded relative to a macroblock either in its own frame or in another reference frame. The encoder typically must select a single mode, from a plurality of available modes, in which to encode the particular macroblock.
The selection of a mode often requires that the rate and distortion characteristics of each available mode to be identified. Typically, a rate distortion cost is computed for each available mode so that an appropriate mode may be selected. The computation of rate distortion cost is usually accomplished by performing transformation and quantization calculations on a video macroblock, and then performing inverse transformation and inverse quantization operations so that an error or distortion level may be identified for a particular encoding mode. In the case of variable length encoding schemes, these rate and distortion analyses may require a large number of computations, which may strain the encoder's processing resources and negatively affect the encoder's performance.